package com.black.cat.jvm.instructions.constants.ldc;//package com.black.cat.jvm.instructions.constants.ldc;
//
//
//public class LDC_W extends InstructionIndex16 {
//
//    @Override
//    public void execute(Frame frame) {
//        _ldc(frame, this.idx);
//    }
//
//    private void _ldc(Frame frame, int idx) {
//        OperandStack stack = frame.operandStack();
//        Class clazz = frame.method().clazz();
//        RunTimeConstantPool runTimeConstantPool = frame.method().clazz().constantPool();
//        Object c = runTimeConstantPool.getConstants(idx);
//
//        if (c instanceof Integer) {
//            stack.pushInt((Integer) c);
//            return;
//        }
//
//        if (c instanceof Float) {
//            stack.pushFloat((Float) c);
//            return;
//        }
//
//        if (c instanceof String) {
//            Object internedStr = StringPool.jString(clazz.loader(), (String) c);
//            stack.pushRef(internedStr);
//        }
//
//        throw new RuntimeException("todo ldc");
//    }
//
//}
